home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Monster Media 1994 #2
/
Monster Media No. 2 (Monster Media)(1994).ISO
/
utils1
/
2m21src.zip
/
2MFKIT.ASM
< prev
next >
Wrap
Assembly Source File
|
1994-05-31
|
4KB
|
106 lines
;┌───────────────────────────────────────────────────────────────────┐
;│ │
;│ █████ █ █ █▀▀▀▀ █ █ ▀▀█▀▀ ▀▀█▀▀ │
;│ █ ██ ██ █ █ █ █ █ │
;│ █████ █ █ █ █▀▀ █▀█ █ █ │
;│ █ █ █ █ █ █ █ █ │
;│ █████ █ █ █ █ █ ▄▄█▄▄ █ │
;│ │
;│ 2MFKIT 2.1 - (C) Mayo 1994 Ciriaco García de Celis. │
;│ │
;│ FICHERO CON CODIGO ENSAMBLADOR LINKABLE CON 2MF.C │
;│ │
;│ Código de 2M que será almacenado en los sectores de │
;│ los disquetes y algunas funciones ASM de utilidad. │
;│ │
;│ Proceso: │
;│ │
;│ TASM 2MFKIT /m5 /mx │
;│ │
;│ El fichero 2MFBOOT.DB que se carga con INCLUDE debe obtenerse │
;│ previamente a partir de 2MFBOOT.ASM con ayuda de 2MFBMAKE.BAS │
;│ │
;└───────────────────────────────────────────────────────────────────┘
_DATA SEGMENT WORD PUBLIC 'DATA'
ASSUME CS:_DATA, DS:_DATA
PUBLIC _Boot2mCode, _Boot2mLong
PUBLIC _biosdsk, _PicoRetardo
; ------------ Código 2M para grabar en los 5 sectores ocultos de los
; disquetes de alta densidad al formatear.
_Boot2mCode: INCLUDE 2MFBOOT.DB
_Boot2mLong DW $-OFFSET _Boot2mCode
; ------------ Rutina de acceso a disco vía BIOS. No se utiliza la
; función biosdisk() del compilador porque en algunas
; versiones del mismo hace tonterías que no debe. Así,
; además, se puede llamar a INT 13h con CALL (bueno,
; con RETF) para que dentro de WINDOWS 2MF /M no de
; problemas; además, la función de formateo de 2M
; requiere SI="2M" al llamar.
_biosdsk PROC FAR
PUSH BP
MOV BP,SP
PUSH SI
PUSH DI
PUSHF ; estructura para futuro IRET
PUSH CS
LEA AX,bdsk_ret
PUSH AX
XOR AX,AX
MOV ES,AX
PUSH ES:[13h*4+2] ; INT 13h -> pila
PUSH ES:[13h*4]
MOV AH,[BP+6]
MOV DL,[BP+8]
MOV DH,[BP+10]
MOV CH,[BP+12]
MOV CL,[BP+14]
MOV AL,[BP+16]
LES BX,DWORD PTR [BP+18]
MOV SI,"2M"
RETF ; ejecutar INT 13h
bdsk_ret: POP DI
POP SI
POP BP
MOV AL,AH ; resultado
MOV AH,0
RET
_biosdsk ENDP
; ------------ Pequeño retardo de medio milisegundo.
_PicoRetardo PROC FAR
PUSH AX
PUSHF
POP AX
OR AH,70h
PUSH AX
POPF
PUSHF
POP AX
AND AH,0F0h
CMP AH,0F0h ; ¿es PC/XT?
JE xt
MOV CX,33 ; 18÷1193180*33*1000 = 0.5 ms
wrf: IN AL,61h
AND AL,10h
CMP AL,AH
JE wrf ; esperar pulso refresco memoria
MOV AH,AL
LOOP wrf
xt: POP AX
RET
_PicoRetardo ENDP
_DATA ENDS
END